home *** CD-ROM | disk | FTP | other *** search
/ Large Pack of OldSkool DOS MOD Trackers / buzzmachines_massive.exe / Dev / Geoffroy Notefilter SourceCode / BuzzParameterVolume.cpp < prev    next >
Encoding:
C/C++ Source or Header  |  2002-05-07  |  1.6 KB  |  54 lines

  1. // BuzzParameterVolume.cpp: implementation of the BuzzParameterVolume class.
  2. //
  3. //////////////////////////////////////////////////////////////////////
  4.  
  5. #include "BuzzParameterVolume.h"
  6.  
  7. //////////////////////////////////////////////////////////////////////
  8. // Construction/Destruction
  9. //////////////////////////////////////////////////////////////////////
  10.  
  11. word BuzzParameterVolume::MIN_SLIDER_VALUE = 0;
  12. word BuzzParameterVolume::MAX_SLIDER_VALUE = 0xFFFE;
  13. word BuzzParameterVolume::UNCHANGED_SLIDER_VALUE = 0xFFFF;
  14. word BuzzParameterVolume::INIT_SLIDER_VALUE = 0;
  15.  
  16. float BuzzParameterVolume::MIN_REAL_VALUE = 0.00f;
  17. float BuzzParameterVolume::MAX_REAL_VALUE = 1.0f;
  18.  
  19. BuzzParameterVolume::BuzzParameterVolume() : BuzzParameter<word,float>()
  20. {
  21.     setSliderValue(INIT_SLIDER_VALUE);
  22. }
  23.  
  24. BuzzParameterVolume::~BuzzParameterVolume()
  25. {
  26. }
  27.  
  28. void BuzzParameterVolume::compute()
  29. {
  30.     float valueToReach = (float)(MIN_REAL_VALUE+(currentSliderValue-MIN_SLIDER_VALUE)*(MAX_REAL_VALUE-MIN_REAL_VALUE)/(MAX_SLIDER_VALUE-MIN_SLIDER_VALUE));
  31.  
  32.     // stop !
  33.     if (timeSinceLastValueUpdate >= inertia) {
  34.         currentRealValue = valueToReach;
  35.     } 
  36.     // go smooth!
  37.     else {
  38.         currentRealValue = (float) (currentRealValue + ((valueToReach - currentRealValue) * timeBetweenTwoUpdates /  (inertia - timeSinceLastValueUpdate)));
  39.     }
  40. }
  41.  
  42. char const * BuzzParameterVolume::toString(word const value)
  43. {
  44.     static char txt[50];
  45.     txt[0]=0;
  46.  
  47.     float valueToReach = (float)(MIN_REAL_VALUE+(value-MIN_SLIDER_VALUE)*(MAX_REAL_VALUE-MIN_REAL_VALUE)/(MAX_SLIDER_VALUE-MIN_SLIDER_VALUE));
  48.  
  49.     sprintf(txt,"%d %%",(int)(valueToReach*100.0f));
  50.  
  51.     return txt;
  52.  
  53. }
  54.